/*
 * File:   parser.h
 * Author: ScaV
 *
 * Created on November 19, 2011, 10:03 PM
 */

#ifndef PARSER_H
#define	PARSER_H

#include <vector>
#include "lexeme.h"

class parser {
public:
	parser(std::vector<lexeme*> *in);
	parser(const parser& orig);
	virtual ~parser();
	void operator ()();
private:
	int FUNCTION();

	int DECLARATIONS();
	int CYCLE_DECLARATION();
	int DECLARATION();
	int VARIABLES();
	int CYCLE_VARIABLES();
	int TYPE();

	int BODY();
	int CYCLE_OPERATOR();
	int OPERATOR();
	int EXPRESSION();
	int SIMPLE();
	int CYCLE_SIMPLE();

	std::vector<lexeme*> *str;
	std::vector<lexeme*>::iterator iter;
};

#endif	/* PARSER_H */
